<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // promise 是一种异步编程的解决方案  （回调-promise-async/await）

        // promise 通常是一个存放将来才会知道结果的容器

        // promise的三种状态   初始状态 pending   出来结果以后 成功fulfiled  失败rejected

        // promise 三个方法   then  /  catch  /   finally

        // （它本身是同步的  但是方法是异步的  --- 且属于异步微任务）

        // 他是为了更好的解决回调地地狱问题的   then的链式调用 ， all方法

        // all的用法   



        // async / await 是ES7提出的更好的解决异步问题   ---- 让异步看起来跟同步一样
        // async 实际上返回了成功的promise实例
        // await 必须在async中使用  且一般await是等待一个promise的结果  
        //   如果await等到的是一个失败的结果就会内部报错，可以catch这个报错


        const p = new Promise((resolve , reject) => {
            setTimeout(() => {
                const n = parseInt(Math.random() * 100) ;
                if(n % 2 === 0) {
                    resolve(n)
                } else {
                    reject(n)
                }
            })
        })


        async function f() {
            const res = await p 
            console.log(res);
        }

        f().catch(err => {
            console.log(err);
        })




    </script>
    
</body>
</html>